#!/usr/bin/env node

/**
 * RLS 策略测试脚本
 * 这个脚本用于全面测试行级安全策略是否正确工作
 */

const { Pool } = require('pg')
const fs = require('fs')
const path = require('path')

// 数据库连接配置
const pool = new Pool({
    connectionString: process.env.DATABASE_URL || 'postgresql://postgres:postgres123@localhost:5433/product_showcase',
    max: 5,
    idleTimeoutMillis: 30000,
    connectionTimeoutMillis: 2000,
})

async function runTest() {
    const client = await pool.connect()
    
    try {
        console.log('开始执行 RLS 策略测试...\n')
        
        // 执行测试 SQL 文件
        const testFile = path.join(__dirname, '../database/init/005_test_rls_policies.sql')
        if (fs.existsSync(testFile)) {
            const sql = fs.readFileSync(testFile, 'utf8')
            await client.query(sql)
            console.log('✓ RLS 测试脚本执行完成')
        } else {
            console.error('测试文件不存在:', testFile)
            process.exit(1)
        }
        
    } catch (error) {
        console.error('测试执行失败:', error.message)
        console.error('详细错误:', error)
        process.exit(1)
    } finally {
        client.release()
    }
}

async function main() {
    try {
        await runTest()
        console.log('\n==================== 测试完成 ====================')
        console.log('请查看上述输出，确保所有测试都通过')
        console.log('如果有测试失败，请检查 RLS 策略配置')
        console.log('====================================================')
    } catch (error) {
        console.error('测试失败:', error.message)
        process.exit(1)
    } finally {
        await pool.end()
    }
}

// 如果直接运行此脚本
if (require.main === module) {
    main().catch(console.error)
}

module.exports = { runTest }